\catcode`\!=11

\newif\ifFIRSTPOINT

\newskip\Abs			\newskip\AbstandQ
\newskip\Merkx			\newskip\Merky
\newskip\TMPA			\newskip\TMPB

\newbox\MYBOX	
\newbox\MYBOXA	\newbox\MYBOXB

\def\plottext{\begingroup\plottexti}

\def\plottexti #1 on {\FIRSTPOINTtrue
	\let\!plot\!polytextplot
	\def\ZeichenKette{#1}%
	\@ifnextchar"{\plottextifile}{\plottextilist}}
	
\def\plottextilist #1 / {%
	\expandafter\plot #1 / 
	\endgroup}
	
\def\plottextifile "#1" {%
	\plot "#1" 
	\endgroup}
	
\def\Pop#1#2{\expandafter\Split#1{}{}\endsplit{#2}{#1}}

\def\Split#1#2\endsplit#3#4{\def#3{#1}\def#4{#2}%
	\def\TMP{#1}%
	\ifx\TMP\empty\def#3{{ }}\fi}

\def\ESC{/}
	
\ifx\@rotstart\undefined % from rotate.sty
	\def\@vspec#1{\special{ps:#1}}
			%  passes #1 verbatim to the output
	\def\@rotstart#1{\@vspec{gsave currentpoint currentpoint translate
   		#1 neg exch neg exch translate}}
			% #1 can be any origin-fixing transformation
	\def\@rotfinish{\@vspec{currentpoint grestore moveto}}
			% gets back in synch
\fi

\def\!polytextplot(#1,#2){%
  \ifFIRSTPOINT
  	  \Merkx=#1\Merky=#2%
	  %
	  \Pop\ZeichenKette\Buchstabe
	  \ifx\Buchstabe\ESC
	  	\Pop\ZeichenKette\TEST
	  	\TEST
	  	\Pop\ZeichenKette\Buchstabe
	  \fi
	  \setbox\MYBOX\hbox{\Buchstabe}%
	  %
	  \AbstandQ=\wd\MYBOX
	  \!removept{\AbstandQ}{\TMP}%
	  \AbstandQ=\TMP\AbstandQ
	  %
	  \FIRSTPOINTfalse
	  \let\LetzterBuchstabe\Buchstabe
  \else
	  \TMPA=-#2\advance\TMPA by \Merky
	  \!removept{\TMPA}{\MyY}%
	  \Abs=\MyY\TMPA\relax
	  %
	  \TMPB=#1\advance\TMPB by -\Merkx
	  \!removept{\TMPB}{\MyX}%
	  \advance\Abs by \MyX\TMPB\relax
	  %
	  \ifdim\Abs>\AbstandQ
		  %		  
		  \!dimenA=-\!plotxorigin \advance\!dimenA by \Merkx
		  \!dimenB=-\!plotyorigin \advance\!dimenB by \Merky
		  \kern\!dimenA\raise\!dimenB
			  	\hbox{%
					\@rotstart{\MyY\space\MyX\space atan rotate}%
						\vbox to 0pt{\vss\hbox to 0pt{\unhcopy\MYBOX\hss}}%
						\message{\Buchstabe}%
					\@rotfinish
				}%
		  \kern-\!dimenA
		  %
		  \Merkx=#1\relax
		  \Merky=#2\relax
		  \let\LetzterBuchstabe\Buchstabe
	 	  \Pop\ZeichenKette\Buchstabe
		  \ifx\Buchstabe\ESC
		  	\Pop\ZeichenKette\TEST
		  	\TEST
		  	\Pop\ZeichenKette\Buchstabe
		  \fi
		  \setbox\MYBOXA\hbox{\LetzterBuchstabe\Buchstabe}%
		  \setbox\MYBOXB\hbox{\hbox{\LetzterBuchstabe}\hbox{\Buchstabe}}%
		  \dimen0=\wd\MYBOXA \advance\dimen0 by -\wd\MYBOXB
	  	  \setbox\MYBOX\hbox{\kern\dimen0\Buchstabe}%
	  	  \AbstandQ=\wd\MYBOX
	      \!removept{\AbstandQ}{\TMP}%
	      \AbstandQ=\TMP\AbstandQ
	  \fi
  \fi
  \ignorespaces}
  
\catcode`\!=12

\endinput

